namespace Dalamud.Game.ClientState.Objects.Enums;

/// <summary>
/// This enum describes the indices of the Customize array.
/// </summary>
// TODO: This may need some rework since it may not be entirely accurate (stolen from Sapphire)
public enum CustomizeIndex
{
    /// <summary>
    /// The race of the character.
    /// </summary>
    Race = 0x00,

    /// <summary>
    /// The gender of the character.
    /// </summary>
    Gender = 0x01,

    /// <summary>
    /// The tribe of the character.
    /// </summary>
    Tribe = 0x04,

    /// <summary>
    /// The height of the character.
    /// </summary>
    Height = 0x03,

    /// <summary>
    /// The model type of the character.
    /// </summary>
    ModelType = 0x02, // Au Ra: changes horns/tails, everything else: seems to drastically change appearance (flip between two sets, odd/even numbers). sometimes retains hairstyle and other features

    /// <summary>
    /// The face type of the character.
    /// </summary>
    FaceType = 0x05,

    /// <summary>
    /// The hair of the character.
    /// </summary>
    HairStyle = 0x06,

    /// <summary>
    /// Whether the character has hair highlights.
    /// </summary>
    HasHighlights = 0x07, // negative to enable, positive to disable

    /// <summary>
    /// The skin color of the character.
    /// </summary>
    SkinColor = 0x08,

    /// <summary>
    /// The eye color of the character.
    /// </summary>
    EyeColor = 0x09, // color of character's right eye

    /// <summary>
    /// The hair color of the character.
    /// </summary>
    HairColor = 0x0A, // main color

    /// <summary>
    /// The highlights hair color of the character.
    /// </summary>
    HairColor2 = 0x0B, // highlights color

    /// <summary>
    /// The face features of the character.
    /// </summary>
    FaceFeatures = 0x0C, // seems to be a toggle, (-odd and +even for large face covering), opposite for small

    /// <summary>
    /// The color of the face features of the character.
    /// </summary>
    FaceFeaturesColor = 0x0D,

    /// <summary>
    /// The eyebrows of the character.
    /// </summary>
    Eyebrows = 0x0E,

    /// <summary>
    /// The 2nd eye color of the character.
    /// </summary>
    EyeColor2 = 0x0F, // color of character's left eye

    /// <summary>
    /// The eye shape of the character.
    /// </summary>
    EyeShape = 0x10,

    /// <summary>
    /// The nose shape of the character.
    /// </summary>
    NoseShape = 0x11,

    /// <summary>
    /// The jaw shape of the character.
    /// </summary>
    JawShape = 0x12,

    /// <summary>
    /// The lip style of the character.
    /// </summary>
    LipStyle = 0x13, // lip colour depth and shape (negative values around -120 darker/more noticeable, positive no colour)

    /// <summary>
    /// The lip color of the character.
    /// </summary>
    LipColor = 0x14,

    /// <summary>
    /// The race feature size of the character.
    /// </summary>
    RaceFeatureSize = 0x15,

    /// <summary>
    /// The race feature type of the character.
    /// </summary>
    RaceFeatureType = 0x16, // negative or out of range tail shapes for race result in no tail (e.g. Au Ra has max of 4 tail shapes), incorrect value can crash client

    /// <summary>
    /// The bust size of the character.
    /// </summary>
    BustSize = 0x17, // char creator allows up to max of 100, i set to 127 cause who wouldnt but no visible difference

    /// <summary>
    /// The face paint of the character.
    /// </summary>
    Facepaint = 0x18,

    /// <summary>
    /// The face paint color of the character.
    /// </summary>
    FacepaintColor = 0x19,
}
